package com.ang.regularExpression;

/**
 * @author ssang
 * @date 2022-01-18 14:09
 */
public class RegTest {

    public static final String SPECIAL_CHAR = "!@#$%_+=*";

    public static void main(String[] args) {
        test("Ang");
        test("123");
        test("!@#$%_+=*");
        test("!@#123");
        test("Ang123");
        test("Ang%_+");
        test("Ang123@#￥");
        test("$ang123*");
        test("$ang#*");
        test("$123#*");
        test("$123*");
        test("$%*");
        test("$a*");
        test("$*");
        test("啊");
        test("abc啊");
        test("啊123");
    }


    public static void test(String password){
        String reg_num = ".*[0-9].*";//是否包含数字
        String reg_eng = ".*[a-zA-z].*";//是否包含字母
        String reg_cha = ".*["+SPECIAL_CHAR+"].*";//是否包含指定的特殊字符
        String reg_chi = ".*[\\u4e00-\\u9fa5].*";//是否包含中文
        String reg_all = "^[A-Za-z0-9"+SPECIAL_CHAR+"]+$";//内容是否指定的字符，含有多余的返回false

        if(password.matches(reg_chi)){
            System.out.println(password+" 包含中文");
            return;
        }

        int num=0;
        if(password.matches(reg_num)){
           num ++;
        }
        if(password.matches(reg_eng)){
            num ++;
        }
        if(password.matches(reg_cha)){
            num ++;
        }
        if(num < 2){
            System.out.println(password+" 少于2种字符");
            return;
        }

        if(!password.matches(reg_all)){
            System.out.println(password+" 包含特殊字符");
            return;
        }

        System.out.println(password+" 正确格式");
    }
}
